/*************************************************
 *	文件名称：HString.h
 *	文件说明：串的堆分配存储结构表示
 *	程序平台：
 *	文件作者：Jason <jasonsunsoft@163.com>
 *	文件时间：2014年10月3日18:52
*************************************************/
#ifndef HSTRING_H
#define HSTRING_H

#include <stdio.h>
#include <stdlib.h>

#define OK			1
#define ERROR		0
#define INFEASIBLE	-1
#define OVERFLOW	-2

typedef int  Status;
enum BOOL {FALSE, TRUE};


	//============ ADT String 的表示与实现 ============
//---------- 串的堆分配存储表示 ------------
typedef struct{
    char *ch;		//若是非空串，则按串长分配存储区，否则ch为NULL
    int length;		//串长度
}HString;

//--------- 基本操作的函数原型 --------------
Status StrAssign(HString *T, char * chars);
//初始条件：
//操作结果：生成一个其值等于串常亮 chars 的串T

int Strlength(HString S);
//初始条件：
//操作结果：返回S的元素个数，称其为串的长度

int StrCompare(HString S, HString T);
//初始条件：
//操作结果：若 S > T, 则返回值 > 0；若 S = T, 则返回值 = 0；若 S < T, 则返回值 < 0。

Status ClearString(HString *S);
//初始条件：
//操作结果：将S清为空串，并释放S所占空间

Status Concat(HString *T, HString S1, HString S2);
//初始条件：
//操作结果：用T返回由S1和S2连接而成的新串

Status SubString(HString *Sub, HString S, int pos, int len);
//初始条件：1 <= pos <= SteLength(S) 且 0 <= len <= StrLength(S) -pos +1
//操作结果：返回串的第pos个字符起长度为len的子串



#endif // HSTRING_H
